package com.example.administrator.mvp.base;

import com.example.administrator.mvp.base.i.IBasePresenter;
import com.example.administrator.mvp.base.i.IBaseView;
import com.example.administrator.mvp.base.i.IBaseModel;

/**
 * Presenter的基类，可以在这里创建具有共性的方法提供给子类共同使用，比如检查服务端返回的错误码，登录超时，网络异常等
 */
public abstract class BasePresenter<V extends IBaseView, M extends IBaseModel> implements IBasePresenter {
    public V view;
    public M model;

    public BasePresenter(V view, M model) {
        this.view = view;
        this.model = model;
    }

    @Override
    public void subscribe() {
        //可以在这里做一些资源的初始化工作，或对view生命周期简单的管理
    }

    @Override
    public void unsubscribe() {
        //可以在这里做释放资源的工作，或对view生命周期简单的管理
    }

    /**
     * 检查服务端返回的错误码，并做相应的处理
     *
     * @param errorCode 错误码
     * @param errorMsg  错误信息
     */
    public void showNetworkError(int errorCode, String errorMsg) {
        //假设400是服务端定义的需要重新登录的错误码
        if (errorCode == 400)
            view.reLogin();
    }

}
